Skip to content

feat: Sync macOS port with upstream god-team/main#2

Merged
Okladnoj merged 28 commits intomainfrom
okji/feat/macos-port
Apr 26, 2026
Merged

feat: Sync macOS port with upstream god-team/main#2
Okladnoj merged 28 commits intomainfrom
okji/feat/macos-port

Conversation

@Okladnoj
Copy link
Copy Markdown

Summary

Merges upstream god-team/main into the macOS port branch.

Changes from upstream

Conflict resolution

Single conflict in GameClient.cpp — resolved with platform-conditional clock selection:

#ifdef __APPLE__
  // Apple libc++ does not implement std::chrono::utc_clock
  int64_t currTime = ...system_clock...
#else
  int64_t currTime = ...utc_clock...
#endif

Testing

  • ✅ Build passes on macOS (Apple Clang 17, arm64)
  • ✅ Game tested and working correctly

Okladnoj and others added 28 commits April 16, 2026 03:37
- Add two-tab interface: Steam (recommended) and Local Archive
- Implement SteamCMDManager with auto-install from Valve CDN
- Handle Steam Guard 2FA prompts via in-app input
- Strip quarantine attrs (xattr -cr) on downloaded steamcmd binary
- Add native About window with author credits and project links
- Add menu bar About command
- Update distribution script for DMG generation (hdiutil)
- Include Applications symlink for drag-to-install UX
…tion to SteamCMD manager while modularizing DMG build scripts.
…up legacy preprocessor directives

- Merged fragmented hardware capabilities from MetalInterface8 into the authoritative MetalDevice8::FillDeviceCaps, creating a single robust source of truth that aligns with standard DX8 architecture.
- Explicitly assigned PixelShaderVersion and VertexShaderVersion to 0. This bypasses the engine's attempt to use PS1.4/terrain shaders (which currently lack full shading fidelity in MSL) and forces it to use the stable, visually perfect TSS fixed-function fallback.
- Dropped redundant #ifdef __APPLE__ macros across all Platform/MacOS source arrays, as these files are platform-native by definition.
On POSIX, %s in swprintf expects char* while MSVC expects wchar_t*.
This caused all UnicodeString::format calls with %s and wide string
arguments to silently produce truncated output (only first byte visible
due to null bytes in 4-byte wchar_t encoding on macOS).

Additionally, non-ASCII Unicode characters in format strings (U+25CF,
U+25CC) caused swprintf to fail entirely under the default C locale.

Changes:
- Set LC_CTYPE to UTF-8 in MacOSMain.mm entry point
- Add format string converter in UnicodeString::format_va that rewrites
  MSVC-style %s to POSIX %ls under __APPLE__, fixing all 22+ callsites
- Guard from_utf8 call in WOLBuddyOverlay with __APPLE__ to use
  translate() instead, preventing std::range_error on non-UTF-8 nicks
…x/pause-particle-effects

fix(gameclient): Fix particle effects not freezing on game pause under GENERALS_ONLINE_HIGH_FPS_RENDER
…Cache filesystem integration

Refactored audio stream caching to use engine-native AsciiString and TheFileSystem, avoiding manual /tmp/ path construction. Implemented 'ensure_engine_running' check in AVAudioBridge to gracefully restart AVAudioEngine if it pauses during mass node stopping (e.g. on mission restart).
@github-actions
Copy link
Copy Markdown

⚠️ Title/Commit Validation Failed

Invalid commit messages:

  • chore: comment out DEBUG_AUDIO_MAC_FLAG in MacDebug.h
  • Fix MacOS AVAudioEngine pausing on mission restart and refactor AudioCache filesystem integration
  • feat: implement UI repositioning for resolution changes and add generation-based audio slot safety checks
  • chore: ignore local Firebase Hosting deployment directory
  • chore: add Firebase Hosting directory to gitignore
  • feat: implement auto-update infrastructure and versioning for macOS launcher
  • fix: switch display resolution and drawable sizing to logical points to correctly handle macOS Retina scaling
  • docs: update setup instructions in MacOS launcher documentation
  • Revert "fix(macos-port): update launcher scenario in step 5 of instructions"
  • fix(macos-port): update launcher scenario in step 5 of instructions
  • fix(macos): resolve missing buddy names and intermittent from_utf8 crash
  • Refactor: Unified MacOS Metal hardware device capabilities & cleaned up legacy preprocessor directives
  • chore: Сomment out local install path configuration and DMG creation script
  • feat(launcher): allow engine and UI to recognize unified Steam folder containing both Base and Zero Hour assets
  • feat: add Keychain support, asset reorganization, and purchase validation to SteamCMD manager while modularizing DMG build scripts.
  • feat(launcher): add SteamCMD BYOG download and tabbed UI
  • feat: integrate deterministic fdlibm math library and update game engine dependencies
    PR titles and commit messages must follow conventional commits format:
type: Description
type(scope): Description

Allowed types: bugfix, build, chore, ci, docs, fix, feat, perf, refactor, revert, style, test, tweak, unify

See CONTRIBUTING.md for details.

@Okladnoj Okladnoj merged commit ea3b714 into main Apr 26, 2026
1 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants